import  re

# findall 匹配字符串中所有的符合正则的内容，返回一个列表，实际用的并不多，原因是返回的是列表
ls = re.findall(r"\d+","10087,10086")
print(ls)

# finditer 匹配字符串中所有的符合正则的内容，返回一个迭代器,使用.group()获取其中的内容，
# 迭代器效率高的多
it = re.finditer(r"\d+","10087,10086")
for i in it:
    print(i.group())

# search 返回的结果是match对象，使用.group()获取内容
# 特点：返回全文匹配的第一个结果
s = re.search(r"\d+","10087,10086")
print(s.group())

# search 返回的结果是match对象，使用.group()获取内容
# 特点：返回从开头匹配的第一个结果
s = re.match(r"\d+","10087,10086")
print(s.group())

# 预加载正则表达式，用于重复使用的正则表达式
obj = re.compile(r"\d+")
ls = obj.findall("10087,10086")
print(ls)

s=r'''
<div class = 'aaa'><span id = '1'>过期了</span></div>
<div class = 'bbb'><span id = '2'>宋佳</span></div>
<div class = 'ccc'><span id = '3'>范思哲</span></div>
<div class = 'ddd'><span id = '4'>没关系</span></div>
<div class = 'eee'><span id = '5'>你好吗</span></div>
'''

# 在正则表达式中把自己需要提取的内容使用括号包裹，并且加上 ： ?P<name>  这个name是组名称，可以随意取
# re.S 标识忽略换行符
obj = re.compile(r"<div class = '(?P<class>.*?)'><span id = '\d+'>(?P<name>.*?)</span></div>",re.S)
it =obj.finditer(s)
for i in it:
    print(i.group("class"))
    print(i.group("name"))